package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.DTO.BaseDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyWeChatDTO;
import com.itlong.cloud.POJO.PO.WeChatOfficialAuthInfoPO;
import com.itlong.cloud.POJO.VO.operate.OperateWeChatVO;
import com.itlong.cloud.POJO.VO.property.PropertyWeChatVO;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      物业-微信支付相关持久层接口
 * </desc>
 *
 * @createDate 2019/09/09
 */
@Mapper
@Repository
public interface IPropertyWeChatDao {

    /**
     * <desc>
     *      获取用户授权的appId
     * </desc>
     *
     * @return 用户授权的appId
     * @author wangzhi
     * @createDate 2019/09/09
     */
    List<Map<String,Object>> getAppId(BaseDTO baseDTO);

    /**
     * <desc>
     *      获取物业公众号授权详情
     * </desc>
     *
     * @return 物业公众号授权详情
     * @author wangzhi
     * @createDate 2019/09/10
     */
    WeChatOfficialAuthInfoPO getOneWeChatAuthDetail(PropertyWeChatDTO propertyWeChatDTO);

    /**
     * <desc>
     *      校验项目是否已填写商户号
     * </desc>
     *
     * @return 物业公众号授权详情
     * @author wangzhi
     * @createDate 2019/09/10
     */
    WeChatOfficialAuthInfoPO checkProjectAuth(PropertyWeChatDTO propertyWeChatDTO);

    /**
     * <desc>
     *      修改
     * </desc>
     *
     * @param map 修改参数集
     * @return 受影响的行数
     * @author wangzhi
     * @createDate 2019/09/10
     */
    Integer update(Map<String, Object> map);

    /**
     * <desc>
     *      添加
     * </desc>
     *
     * @param map 添加参数集
     * @return 受影响的行数
     * @author wangzhi
     * @createDate 2019/09/10
     */
    Integer save(Map<String, Object> map);

    /**
     * <desc>
     *      查询appId和商户号信息列表
     * </desc>
     *
     * @return 列表信息
     * @author wangzhi
     * @createDate 2019/09/10
     */
    List<PropertyWeChatVO> getMchIdPage(Map<String, Object> params);

    /**
     * <desc>
     *      查询appId和商户号信息总记录数
     * </desc>
     *
     * @return appId和商户号信息总记录数
     * @author wangzhi
     * @createDate 2019/09/10
     */
    Integer getMchIdRecordCount(Map<String, Object> params);

    /**
     * <desc>
     *      再次授权时修改授权信息
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/09/11
     */
    Integer updateAuthAgain(WeChatOfficialAuthInfoPO weChatOfficialAuthInfoPO);

    /**
     * <desc>
     *      获取公众号列表
     * </desc>
     *
     * @return 公众号列表
     * @author wangzhi
     * @createDate 2019/10/21
     */
    List<PropertyWeChatVO> getAppIdPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取公众号总记录数
     * </desc>
     *
     * @return 公众号总记录数
     * @author wangzhi
     * @createDate 2019/10/21
     */
    Integer getAppIdRecordCount(Map<String, Object> params);

    /**
     * <desc>
     *      查看用户授权
     * </desc>
     *
     * @return 用户授权信息
     * @author wangzhi
     * @createDate 2019/10/21
     */
    PropertyWeChatVO getOneAppId(PropertyWeChatDTO propertyWeChatDTO);

    /**
     * <desc>
     *      解除微信公众号绑定
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/10/21
     */
    Integer deleteAppIdBinding(PropertyWeChatDTO propertyWeChatDTO);

    /**
     * <desc>
     *      修改appId对应商户号
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/10/22
     */
    Integer updateMchId(PropertyWeChatDTO propertyWeChatDTO);

    /**
     * <desc>
     *      解除商户号绑定
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/10/22
     */
    Integer deleteMchIdBinding(PropertyWeChatDTO propertyWeChatDTO);

    /**
     * <desc>
     *      删除多余的数据
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/10/22
     */
    Integer deleteNeedlessData(WeChatOfficialAuthInfoPO weChatOfficialAuthInfoPO);

    /**
     * <desc>
     *      查询开通微信支付的所有项目及详细信息
     * </desc>
     *
     * @return 开通微信支付的所有项目及详细信息
     * @author wangzhi
     * @createDate 2019/10/23
     */
    List<OperateWeChatVO> getWeChatPayPage(Map<String, Object> params);

    /**
     * <desc>
     *      查询开通微信支付的所有项目及详细信息总记录数
     * </desc>
     *
     * @return 开通微信支付的所有项目及详细信息总记录数
     * @author wangzhi
     * @createDate 2019/10/23
     */
    Integer getWeChatPayPageRecordCount(Map<String, Object> params);

    /**
     * <desc>
     *      查询单条记录（去除projectId，mchId，apiKey），用于复制
     * </desc>
     *
     * @return 用于复制的单条记录
     * @author wangzhi
     * @createDate 2019/10/23
     */
    WeChatOfficialAuthInfoPO getOneForCopy(PropertyWeChatDTO propertyWeChatDTO);

    /**
     * <desc>
     *      添加公众号AppSecret
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/11/05
     */
    Integer updateAppSecret(PropertyWeChatDTO propertyWeChatDTO);
}
